import store from '../store/index'
import util from './util'
const BASE_URI = 'http://www.shangdihuayu.top/tiantainbeishengjingJDK7'
// const BASE_URI = 'http://ts.nssoftware.com.cn'
// const BASE_URI = 'https://shop.nssoftware.com.cn' // 线上地址

let header = { // 请求头信息
	'content-type': 'application/x-www-form-urlencoded',
	// 'User-Agent': 'Wechat',
	// 'systemId': 1,
	// 'shopId': 'ef7a3a992edb43a182b6b997ff87de32' // 店铺Id
}

let resultObj // 响应数据
/**
 * 接口响应对象处理
 * listDataFlag: true 用于列表数据请求的接口
 * 否则，为一般请求数据接口
 */
function errDealFunc(res, endpoint, method, listDataFlag) {
	switch (res.statusCode) {
		case 200:
			resultObj = res.data.result
			break;
		case 300:
			setTimeout(function() {
				util.toast(res.data.message)
			}, 0);
			resultObj = null
			break;
		case 400: // 未登录
			setTimeout(function() {
				util.toast(res.data.message)
			}, 0);
			resultObj = null
			break;
		case 500: // 系统错误
			setTimeout(function() {
				util.toast('系统发生未知错误')
			}, 0);
			resultObj = null
			break;
		case 600:
			setTimeout(function() {
				util.toast('权限不足')
			}, 0);
			resultObj = null
			break;
	}
	
	console.log(`接口${BASE_URI+endpoint}调用成功, 相应对象为`, res);
}

export default {
	/**
	 * 封装请求（async await 封装uni.request）
	 * method	   post/get
	 * endpoint    接口方法名
	 * data		   所需传递参数
	 * load		   是否需要loading
	 */
	async call(endpoint, data, method = 'POST', load = true) {
		if (load) {
			uni.showLoading({
				title: '拼命加载中...',
				mask: true
			});
		}

		let [error, res] = await uni.request({
			url: BASE_URI + endpoint,
			data,
			method,
			header: {
				...header,
				'accessToken': uni.getStorageSync('accessToken'),
			},
			timeout: 20000
		});

		if (error) {
			util.toast('网络错误')
			return
		}

		errDealFunc(res, endpoint, method, true) // 响应处理
		
		setTimeout(() => {
			uni.hideLoading()
		}, 0);

		return resultObj;
	},
	async callNotList(endpoint, data, method = 'POST', load = true) {
		if (load) {
			uni.showLoading({
				title: '拼命加载中...',
				mask: true
			});
		}

		let [error, res] = await uni.request({
			url: BASE_URI + endpoint,
			data,
			method,
			header: {
				...header,
				'accessToken': uni.getStorageSync('accessToken'),
			},
			timeout: 20000
		});

		if (error) {
			util.toast('网络错误')
			return
		}

		errDealFunc(res, endpoint, method) // 响应处理

		setTimeout(() => {
			uni.hideLoading()
		}, 1000);
		
		return resultObj;
	},
}
